# SPDX-License-Identifier: GPL-2.0-only
config SND_SOC_INTEL_SST_TOPLEVEL
	bool "Intel ASoC SST drivers"
	default y
	depends on X86 || COMPILE_TEST
	select SND_SOC_INTEL_MACH
	help
	  Intel ASoC SST Platform Drivers. If you have a Intel machine that
	  has an audio controller with a DSP and I2S or DMIC port, then
	  enable this option by saying Y

	  Note that the answer to this question doesn't directly affect the
	  kernel: saying N will just cause the configurator to skip all
	  the questions about Intel SST drivers.

if SND_SOC_INTEL_SST_TOPLEVEL

config SND_SST_IPC
	tristate
	# This option controls the IPC core for HiFi2 platforms

config SND_SST_IPC_PCI
	tristate
	select SND_SST_IPC
	# This option controls the PCI-based IPC for HiFi2 platforms
	#  (Medfield, Merrifield).

config SND_SST_IPC_ACPI
	tristate
	select SND_SST_IPC
	# This option controls the ACPI-based IPC for HiFi2 platforms
	# (Baytrail, Cherrytrail)

config SND_SOC_INTEL_SST_ACPI
	tristate
	# This option controls ACPI-based probing on
	# Haswell/Broadwell/Baytrail legacy and will be set
	# when these platforms are enabled

config SND_SOC_INTEL_SST
	tristate

config SND_SOC_INTEL_SST_FIRMWARE
	tristate
	select DW_DMAC_CORE
	# This option controls firmware download on
	# Haswell/Broadwell/Baytrail legacy and will be set
	# when these platforms are enabled

config SND_SOC_INTEL_HASWELL
	tristate "Haswell/Broadwell Platforms"
	depends on SND_DMA_SGBUF
	depends on DMADEVICES && ACPI
	select SND_SOC_INTEL_SST
	select SND_SOC_INTEL_SST_ACPI
	select SND_SOC_INTEL_SST_FIRMWARE
	select SND_SOC_ACPI_INTEL_MATCH
	help
	  If you have a Intel Haswell or Broadwell platform connected to
	  an I2S codec, then enable this option by saying Y or m. This is
	  typically used for Chromebooks. This is a recommended option.
	  This option is mutually exclusive with the SOF support on
	  Broadwell. If you want to enable SOF on Broadwell, you need to
	  deselect this option first.

config SND_SOC_INTEL_BAYTRAIL
	tristate "Baytrail (legacy) Platforms"
	depends on DMADEVICES && ACPI && SND_SST_ATOM_HIFI2_PLATFORM=n
	select SND_SOC_INTEL_SST
	select SND_SOC_INTEL_SST_ACPI
	select SND_SOC_INTEL_SST_FIRMWARE
	select SND_SOC_ACPI_INTEL_MATCH
	help
	  If you have a Intel Baytrail platform connected to an I2S codec,
	  then enable this option by saying Y or m. This was typically used
	  for Baytrail Chromebooks but this option is now deprecated and is
	  not recommended, use SND_SST_ATOM_HIFI2_PLATFORM instead.

config SND_SST_ATOM_HIFI2_PLATFORM
	tristate
	select SND_SOC_COMPRESS

config SND_SST_ATOM_HIFI2_PLATFORM_PCI
	tristate "PCI HiFi2 (Merrifield) Platforms"
	depends on X86 && PCI
	select SND_SST_IPC_PCI
	select SND_SST_ATOM_HIFI2_PLATFORM
	help
	  If you have a Intel Merrifield/Edison platform, then
	  enable this option by saying Y or m. Distros will typically not
	  enable this option: while Merrifield/Edison can run a mainline
	  kernel with limited functionality it will require a firmware file
	  which is not in the standard firmware tree

config SND_SST_ATOM_HIFI2_PLATFORM_ACPI
	tristate "ACPI HiFi2 (Baytrail, Cherrytrail) Platforms"
	default ACPI
	depends on X86 && ACPI && PCI
	select SND_SST_IPC_ACPI
	select SND_SST_ATOM_HIFI2_PLATFORM
	select SND_SOC_ACPI_INTEL_MATCH
	select IOSF_MBI
	help
	  If you have a Intel Baytrail or Cherrytrail platform with an I2S
	  codec, then enable this option by saying Y or m. This is a
	  recommended option

config SND_SOC_INTEL_SKYLAKE
	tristate "All Skylake/SST Platforms"
	depends on PCI && ACPI
	depends on COMMON_CLK
	select SND_SOC_INTEL_SKL
	select SND_SOC_INTEL_APL
	select SND_SOC_INTEL_KBL
	select SND_SOC_INTEL_GLK
	select SND_SOC_INTEL_CNL
	select SND_SOC_INTEL_CFL
	help
          This is a backwards-compatible option to select all devices
	  supported by the Intel SST/Skylake driver. This option is no
	  longer recommended and will be deprecated when the SOF
	  driver is introduced.  Distributions should explicitly
	  select which platform uses this driver.

config SND_SOC_INTEL_SKL
	tristate "Skylake Platforms"
	depends on PCI && ACPI
	depends on COMMON_CLK
	select SND_SOC_INTEL_SKYLAKE_FAMILY
	help
	  If you have a Intel Skylake platform with the DSP enabled
	  in the BIOS then enable this option by saying Y or m.

config SND_SOC_INTEL_APL
	tristate "Broxton/ApolloLake Platforms"
	depends on PCI && ACPI
	depends on COMMON_CLK
	select SND_SOC_INTEL_SKYLAKE_FAMILY
	help
	  If you have a Intel Broxton/ApolloLake platform with the DSP
	  enabled in the BIOS then enable this option by saying Y or m.

config SND_SOC_INTEL_KBL
	tristate "Kabylake Platforms"
	depends on PCI && ACPI
	depends on COMMON_CLK
	select SND_SOC_INTEL_SKYLAKE_FAMILY
	help
	  If you have a Intel Kabylake platform with the DSP
	  enabled in the BIOS then enable this option by saying Y or m.

config SND_SOC_INTEL_GLK
	tristate "GeminiLake Platforms"
	depends on PCI && ACPI
	depends on COMMON_CLK
	select SND_SOC_INTEL_SKYLAKE_FAMILY
	help
	  If you have a Intel GeminiLake platform with the DSP
	  enabled in the BIOS then enable this option by saying Y or m.

config SND_SOC_INTEL_CNL
	tristate "CannonLake/WhiskyLake Platforms"
	depends on PCI && ACPI
	depends on COMMON_CLK
	select SND_SOC_INTEL_SKYLAKE_FAMILY
	help
	  If you have a Intel CNL/WHL platform with the DSP
	  enabled in the BIOS then enable this option by saying Y or m.

config SND_SOC_INTEL_CFL
	tristate "CoffeeLake Platforms"
	depends on PCI && ACPI
	depends on COMMON_CLK
	select SND_SOC_INTEL_SKYLAKE_FAMILY
	help
	  If you have a Intel CoffeeLake platform with the DSP
	  enabled in the BIOS then enable this option by saying Y or m.

config SND_SOC_INTEL_CML_H
	tristate "CometLake-H Platforms"
	depends on PCI && ACPI
	depends on COMMON_CLK
	select SND_SOC_INTEL_SKYLAKE_FAMILY
	help
	  If you have a Intel CometLake-H platform with the DSP
	  enabled in the BIOS then enable this option by saying Y or m.

config SND_SOC_INTEL_CML_LP
	tristate "CometLake-LP Platforms"
	depends on PCI && ACPI
	depends on COMMON_CLK
	select SND_SOC_INTEL_SKYLAKE_FAMILY
	help
	  If you have a Intel CometLake-LP platform with the DSP
	  enabled in the BIOS then enable this option by saying Y or m.

config SND_SOC_INTEL_SKYLAKE_FAMILY
	tristate
	select SND_SOC_INTEL_SKYLAKE_COMMON

if SND_SOC_INTEL_SKYLAKE_FAMILY

config SND_SOC_INTEL_SKYLAKE_SSP_CLK
	tristate

config SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC
	bool "HDAudio codec support"
	help
	  If you have a Intel Skylake/Broxton/ApolloLake/KabyLake/
	  GeminiLake or CannonLake platform with an HDaudio codec
	  then enable this option by saying Y

config SND_SOC_INTEL_SKYLAKE_COMMON
	tristate
	select SND_HDA_EXT_CORE
	select SND_HDA_DSP_LOADER
	select SND_SOC_TOPOLOGY
	select SND_SOC_INTEL_SST
	select SND_SOC_HDAC_HDA if SND_SOC_INTEL_SKYLAKE_HDAUDIO_CODEC
	select SND_SOC_ACPI_INTEL_MATCH
	select SND_INTEL_NHLT if ACPI
	help
	  If you have a Intel Skylake/Broxton/ApolloLake/KabyLake/
	  GeminiLake or CannonLake platform with the DSP enabled in the BIOS
	  then enable this option by saying Y or m.

endif ## SND_SOC_INTEL_SKYLAKE_FAMILY

endif ## SND_SOC_INTEL_SST_TOPLEVEL

if SND_SOC_INTEL_SST_TOPLEVEL || SND_SOC_SOF_INTEL_TOPLEVEL

config SND_SOC_ACPI_INTEL_MATCH
	tristate
	select SND_SOC_ACPI if ACPI
	# this option controls the compilation of ACPI matching tables and
	# helpers and is not meant to be selected by the user.

endif ## SND_SOC_INTEL_SST_TOPLEVEL || SND_SOC_SOF_INTEL_TOPLEVEL


# ASoC codec drivers
source "sound/soc/intel/boards/Kconfig"
